import config from '@/api/config.js'
const baseUrl = config.baseUrl;



export function request(params){	
	let url = params.url;
	let method = params.method || "get";
	let data = params.data || {};
	let header = {
		'Content-Type':'application/json;charset=UTF-8',
		'token': uni.getStorageSync('token') || '',
	}
	return new Promise((resolve,reject)=>{		
		uni.request({
			url:baseUrl + url,
			method: method,
			header: header,
			data: data,
			success:res=>{
				// code 等于200 抛出 
				// code 等于201 是后端返回的错误 考虑到有可能写自定义提示错误 所以在这也抛出 理论上这是不抛出的
				if(res.data.code === 200){
					// 返回真确的data
					resolve(res.data)
				}else if(res.data.code === 201){
					// 抛出错误的data
					resolve(res.data)
					// reject(res.data)
				}else{
					// 请求错误清除token
					// uni.clearStorageSync()
					switch (res.data.code) {
						case 208:
							uni.showModal({
								title: "提示",
								content: res.data.message,
								showCancel: false,
								success() {
									setTimeout(() => {
										uni.navigateTo({url: "/pages/login/login",}) //未登录跳到登录页
									}, 1000);
								},
							});
							break;
						case 404:
							uni.showModal({
								title:"错误提示",
								content:'请求地址错',
								showCancel:false
							})
							reject(res.data)
							break;
						default://其他
							uni.showModal({
								title:"错误提示",
								content:res.message,
								showCancel:false
							})
							reject(res.data)
							break;
					}
				}
			},
			fail:err=>{
				console.log(err)
				console.log(err.errMsg.indexOf('request:fail'))
				if (err.errMsg.indexOf('request:fail') !== -1) {
					uni.showModal({
						title:"网络异常",
						content:'请联系管理员',
						showCancel:false
					})
				} else {
					uni.showToast({
						title: '未知异常',
						duration: 2000
					})
				}
				reject(err);
			},
			complete() {
				// 不管成功还是失败都会执行
				// uni.hideLoading();
				// uni.hideToast();
			}
		})
	})
}
